using System;
using System.Collections.Generic;

using PMServiceDesk.DataType;
using PMServiceDesk.DataAccess;

namespace PMServiceDesk.BusinessLogic
{
    public class TipoPaqueteTrabajoLogic
    {
        #region Variables

        private TipoPaqueteTrabajoData _tipoPaqueteTrabajoData;

        #endregion

        #region Constructores

        public TipoPaqueteTrabajoLogic()
        {
            _tipoPaqueteTrabajoData = new TipoPaqueteTrabajoData();
        }

        #endregion

        #region Metodos

        public TipoPaqueteTrabajoType CargarPorId(string id)
        {
            _tipoPaqueteTrabajoData.FiltrarPorId(id);

            return _tipoPaqueteTrabajoData.Cargar();
        }

        public void Grabar(TipoPaqueteTrabajoType tipoPaqueteTrabajo)
        {
            _tipoPaqueteTrabajoData.Grabar(tipoPaqueteTrabajo);
        }

        public List<TipoPaqueteTrabajoType> CargarExplorador(string id,string nombre,string descripcion)
        {
            if(id != "") _tipoPaqueteTrabajoData.FiltrarPorId(id);
            if(nombre != "") _tipoPaqueteTrabajoData.FiltrarPorNombre(nombre);
            if(descripcion != "") _tipoPaqueteTrabajoData.FiltrarPorDescripcion(descripcion);

            return _tipoPaqueteTrabajoData.CargarListaVista();
        }

        public List<TipoPaqueteTrabajoType> CargarPorProyecto(string proyectoId,string habilitado = null)
        {
            _tipoPaqueteTrabajoData.FiltrarPorProyectoId(proyectoId);
            if (habilitado != null) _tipoPaqueteTrabajoData.FiltrarPorHabilitado(habilitado == "1");

            return _tipoPaqueteTrabajoData.CargarLista();
        }

        public List<TipoPaqueteTrabajoType> CargarExploradorPaginado(TipoPaqueteTrabajoType registroBusqueda, int paginaActual = 0, int cantidadMostrar = 0, string orderBy = "")
        {
            _tipoPaqueteTrabajoData.FiltrarPorProyectoId(registroBusqueda.ProyectoId);
            if (registroBusqueda.Nombre != "") _tipoPaqueteTrabajoData.FiltrarPorNombre(registroBusqueda.Nombre);
            if (registroBusqueda.Descripcion != "") _tipoPaqueteTrabajoData.FiltrarPorDescripcion(registroBusqueda.Descripcion);

            return _tipoPaqueteTrabajoData.CargarListaVista(paginaActual, cantidadMostrar, orderBy);
        }

        #endregion
    }
}
